package cn.tedu.knows.kafaka.demo;

import cn.tedu.knows.kafaka.vo.Message;
import com.google.gson.Gson;
import lombok.extern.slf4j.Slf4j;
import org.springframework.kafka.core.KafkaTemplate;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

import javax.annotation.Resource;

//保存到Spring容器,以Spring容器管理
@Component
@Slf4j
public class Producer {
    //将操作kafka的对象从Spring容器中取出
    //KafkaTemplate<[话题名称的类型],[传递消息的类型]>
    //我们要把Message对象转换成Json格式字符串
    @Resource
    private KafkaTemplate<String,String> kafkaTemplate;

    int i = 1;
    //发送消息的方法
    //这个方法我们设计为每8秒运行一次
    //利用上次课提到的Spring定时计划配置
    //fixedRate = 8000 表示每8000毫秒运行一次
    @Scheduled(fixedRate = 8000)
    public void sendMessage(){
        Message message = new Message()
                .setId(i++)
                .setContent("大家好.我是一条消息")
                .setTime(System.currentTimeMillis());
        //将message 对象转换成Json格式字符串
        Gson gson = new Gson();
        String json = gson.toJson(message);
        log.debug("即将发送消息:{}",json);
        kafkaTemplate.send("myTopic",json);
        log.debug("消息已发送!");
    }
}
